package com.solo.system.model.notice;

import com.solo.system.api.entity.SysNoticeUser;
import com.solo.system.model.notice.req.NoticeUserCreateReq;
import com.solo.system.model.notice.req.NoticeUserUpdateReq;
import com.solo.system.model.notice.resp.NoticeUserGetResp;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.Collection;
import java.util.List;

/**
 * 通知公告用户关联实体转换类
 * @author 十一
 * @since 2024-12-04 14:28
 * 人生若只如初见，何事秋风悲画扇
 **/
@Mapper
public interface SysNoticeUserConvert {

    SysNoticeUserConvert INSTANCE = Mappers.getMapper(SysNoticeUserConvert.class);

    SysNoticeUser convert(NoticeUserCreateReq bean);

    SysNoticeUser convert(NoticeUserUpdateReq bean);

    default List<SysNoticeUser> convert(Collection<Long> receivers, Long noticeId) {
        return receivers.stream().map(userId -> {
            SysNoticeUser noticeUser = new SysNoticeUser();
            noticeUser.setNoticeId(noticeId);
            noticeUser.setUserId(userId);
            noticeUser.setIsRead(false);
            return noticeUser;
        }).toList();
    }

    NoticeUserGetResp convertGet(SysNoticeUser bean);

}
